package com.xhwl.logistics.service.http;

import com.xhwl.logistics.dto.http.*;
import com.xhwl.logistics.dto.http.manipulation.AddCarBlackKeTopDTO;
import com.xhwl.logistics.dto.http.manipulation.DeleteCarBlackKeTopDTO;
import com.xhwl.logistics.dto.http.query.*;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Header;
import retrofit2.http.POST;

public interface IKeTopHttpService {

    @POST("api/wec/GetFreeSpaceNum")
    Call<ResponseKeTopDTO> freeSpaceNumber(@Header("version") String version, @Body QueryFreeSpaceNumberKeTopDTO queryFreeSpaceNumberKeTopDTO);

    @POST("findCar/GetCarLocInfo")
    Call<ResponseKeTopDTO> carLocation(@Header("version") String version, @Body QueryCarLocationKeTopDTO queryCarLocationKeTopDTO);

    @POST("findCar/GetCarRoute")
    Call<ResponseKeTopDTO> carRoute(@Header("version") String version, @Body QueryCarRouteKeTopDTO queryCarRouteKeTopDTO);

    @POST("api/wec/GetParkingLotInfo")
    Call<ResponseKeTopDTO> parkingLotInfo(@Header("version") String version, @Body QueryCommonKeTopDTO queryCommonKeTopDTO);

    @POST("api/wec/GetParkingPlaceArea")
    Call<ResponseKeTopDTO> parkingLotArea(@Header("version") String version, @Body QueryCommonKeTopDTO queryCommonKeTopDTO);

    @POST("api/wec/GetParkingNode")
    Call<ResponseKeTopDTO> parkingLotPassage(@Header("version") String version, @Body QueryParkingLotPassageKeTopDTO queryParkingLotPassageKeTopDTO);

    @POST("api/wec/GetDeviceList")
    Call<ResponseKeTopDTO> parkingLotDevice(@Header("version") String version, @Body QueryParkingLotDeviceKeTopDTO queryParkingLotDeviceKeTopDTO);

    /**
     * 查询设备状态
     * @param version
     * @param queryParkingLotDeviceKeTopDTO
     * @return
     */
    @POST("/api/wec/GetDeviceStatus")
    Call<ResponseKeTopDTO> parkingLotDeviceStatus(@Header("version") String version, @Body QueryParkingLotDeviceKeTopDTO queryParkingLotDeviceKeTopDTO);

    @POST("api/wec/QueryCarInfo")
    Call<ResponseKeTopDTO> carInfo(@Header("version") String version, @Body QueryCarInParkingLotKeTopDTO queryCarInParkingLotKeTopDTO);

    @POST("api/wec/GetFreeSpaceNumExt")
    Call<ResponseKeTopDTO> freeSpaceNumberExt(@Header("version") String version, @Body QueryFreeSpaceNumberKeTopDTO queryFreeSpaceNumberKeTopDTO);

    @POST("api/wec/GetCarCardChargeList")
    Call<ResponseKeTopDTO> carCharge(@Header("version") String version, @Body QueryCarChargeKeTopDTO queryCarChargeKeTopDTO);

    @POST("api/wec/GetCarCardList")
    Call<ResponseKeTopDTO> carList(@Header("version") String version, @Body QueryCarListKeTopDTO queryCarListKeTopDTO);

    @POST("api/blacklist/QueryCarBlackInfo")
    Call<ResponseKeTopDTO> carBlack(@Header("version") String version, @Body QueryCarBlackKeTopDTO queryCarBlackKeTopDTO);
    @POST("api/blacklist/AddCarBlackInfo")
    Call<ResponseKeTopDTO> addCarBlack(@Header("version") String version, @Body AddCarBlackKeTopDTO addCarBlackKeTopDTO);
    @POST("api/blacklist/DelCarBlackInfo")
    Call<ResponseKeTopDTO> deleteCarBlack(@Header("version") String version, @Body DeleteCarBlackKeTopDTO deleteCarBlackKeTopDTO);

    @POST("api/wec/GetCarCardRule")
    Call<ResponseKeTopDTO> cardRule(@Header("version") String version, @Body QueryCardRuleKeTopDTO queryCardRuleKeTopDTO);

    /**
     * 用户车位预约接口
     */
    @POST("api/find/ReserveSpace")
    Call<ResponseKeTopDTO> reserveSpace(@Header("version") String version, @Body QueryReserveSpaceKeTopDTO queryReserveSpaceKeTopDTO);

    /**
     * 预订车位查询接口
     */
    @POST("api/find/GetReservableInfo")
    Call<ResponseKeTopDTO> getReservableInfo(@Header("version") String version, @Body QueryReservableInfoKeTopDTO queryReservableInfoKeTopDTO);

    /**
     * 车位预订取消接口
     */
    @POST("api/find/CancelReserveSpace")
    Call<ResponseKeTopDTO> cancelReserveSpace(@Header("version") String version, @Body QueryCancelReserveKeTopDTO queryCancelReserveKeTopDTO);

    /**
     * 道闸控制
     */
    @POST("api/control/GateControl")
    Call<ResponseKeTopDTO> gateControl(@Header("version") String version, @Body QueryGateControlKeTopDTO queryGateControlKeTopDTO);

    /**
     * 道闸状态查询
     */
    @POST("api/wec/GetParkingNodeStatus")
    Call<ResponseKeTopDTO> getGateStatus(@Header("version") String version, @Body QueryGateControlKeTopDTO queryGateControlKeTopDTO);

    /**
     * 通过车牌号查询订单状态
     */
    @POST("api/wec/GetParkingPaymentInfo")
    Call<ResponseKeTopDTO> getParkingPaymentInfo(@Header("version") String version, @Body CarBillKeTopDTO carBillKeTopDTO);

    /**
     * 查询车场收入统计
     * @param version
     * @param getInComeReportKeTopDTO
     * @return
     */
    @POST("api/wec/GetInComeReport")
    Call<ResponseKeTopDTO> getInComeReport(@Header("version") String version, @Body GetInComeReportKeTopDTO getInComeReportKeTopDTO);

    /**
     * 固定车新增接口
     * @param version
     * @param carAddKeTopDTO
     * @return
     */
    @POST("api/wec/AddCarCardNo")
    Call<ResponseKeTopDTO> addCarCardNo(@Header("version")String version, @Body CarAddKeTopDTO carAddKeTopDTO);

    /**
     * 固定车审核
     * @param version
     * @param carAuditKeTopDTO
     * @return
     */
    @POST("api/wec/AuditCardRecharge")
    Call<ResponseKeTopDTO> auditCardRecharge(@Header("version")String version, @Body CarAuditKeTopDTO carAuditKeTopDTO);

    /**
     * 固定车删除
     * @param version
     * @param carDeleteKeTopDTO
     * @return
     */
    @POST("api/wec/DelCarCardInfo")
    Call<ResponseKeTopDTO> delCarCardInfo(@Header("version")String version, @Body CarDeleteKeTopDTO carDeleteKeTopDTO);

    /**
     * 固定车修改
     * @param version
     * @param carAddKeTopDTO
     * @return
     */
    @POST("api/wec/ModifyCarCardNo")
    Call<ResponseKeTopDTO> auditCardRecharge(@Header("version")String version, @Body CarAddKeTopDTO carAddKeTopDTO);

    /**
     * 固定车查询
     * @param version
     * @param queryCarCardInfoDTO
     * @return
     */
    @POST("api/wec/GetCarCardInfo")
    Call<ResponseKeTopDTO> getCarCardInfo(@Header("version")String version, @Body QueryCarCardInfoDTO queryCarCardInfoDTO);
}
